import axios from "axios";
// import {Loading} from 'element-ui'
// let loadinginstace; //load加载

// 进行一些全局配置
// 公共路由(网络请求地址)
// axios.defaults.baseURL = "http://ht.phpgzs.top";
// 请求响应超时时间
axios.defaults.timeout = 5000;
axios.defaults.retry = 4; // 超时重复请求次数
axios.defaults.retryDelay = 500; // 超时重复请求间隙

//  请求超时重复请求
axios.interceptors.response.use(
    function(response) {
        // 这里的response包含每次响应的内容
        return response;
    },
    function axiosRetryInterceptor(err) {
        var config = err.config;

        if (!config || !config.retry) return Promise.reject(err);

        config.__retryCount = config.__retryCount || 0;

        if (config.__retryCount >= config.retry) {
            return Promise.reject(err);
        }

        config.__retryCount += 1;
        var backoff = new Promise(function(resolve) {
            setTimeout(() => {
                resolve();
            }, config.retryDelay || 1);
        });
        return backoff.then(function() {
            return axios(config);
        });
    }
);

// 封装自己的get/post方法
// 封装自己的get/post方法
export default {
    get: function(path = "", data = {}) {
        return new Promise(function(resolve, reject) {
            axios
                .get(path, {
                    params: data,
                })
                .then(function(response) {
                    // 按需求来，这里我需要的是response.data，所以返回response.data，一般直接返回response
                    resolve(response.data);
                })
                .catch(function(error) {
                    reject(error);
                });
        });
    },
    post: function(path = "", data = {}, headers = {}) {
        return new Promise(function(resolve, reject) {
            axios
                .post(path, data, headers)
                .then(function(response) {
                    resolve(response.data);
                })
                .catch(function(error) {
                    reject(error);
                });
        });
    },
};

// 添加请求拦截器
// axios.interceptors.request.use(function (config) {
//   // 在发送请求之前做些什么
//   console.log(config)
//   return config;
// }, function (error) {
//   // 对请求错误做些什么
//   console.log(error)
//   return Promise.reject(error);
// });

// 添加响应拦截器
// axios.interceptors.response.use(function (response) {
//   // 对响应数据做点什么
//   console.log(response)
//   return response;
// }, function (error) {
//   // 对响应错误做点什么
//   if (error.response.status) {
//     switch (error.response.status) {
//         case 400:
//           alert("请求错误(400)")
// 					break;
// 				case 401:
//           alert("未授权,请重新登录(401)")
// 					break;
// 				case 403:
//           alert("拒绝访问(403)")
// 					break;
// 				case 404:
//           alert("请求出错(404)")
// 					break;
// 				case 408:
//           alert("请求超时(408)")
// 					break;
// 				case 500:
//           alert("服务器错误(500)")
// 					break;
// 				case 501:
//           alert("服务未实现(501)")
// 					break;
// 				case 502:
//           alert("网络错误(502)")
// 					break;
// 				case 503:
//           alert("服务不可用(503)")
// 					break;
// 				case 504:
//           alert("网络超时(504)")
// 					break;
// 				case 505:
//           alert("HTTP版本不受支持(505)")
// 					break;
// 				default:
//           alert(error.response.data.message)
//     }
//     return Promise.reject(error.response);
//   }
// });